package com.jky.trial.service;


import com.jky.trial.common.BaseResult;
import com.jky.trial.common.ListResult;
import com.jky.trial.entity.Project;
import com.jky.trial.entity.User;
import com.jky.trial.vo.ProjectVo;
import com.jky.trial.vo.TaskVo;

import java.util.List;

public interface ProjectService {
    /**
     * 创建
     *
     * @param record
     * @return
     */
    BaseResult create(Project record);

    /**
     * 更新外业进度
     * @param id
     * @return
     */
    int updateProgress(int id);

    /**
     * 更新
     *
     * @param record
     * @return
     */
    int update(Project record);

    /**
     * 领导看板概览统计
     * @param example
     * @return
     */
    List<ProjectVo> staSum(ProjectVo example);

    /**
     * 人员设置
     * @param record
     * @param user
     * @return
     */
    int setPerson(Project record, User user);
    int setPlan(Project record, User user);

    /**
     * 统计项目
     * @param user
     * @return
     */
    BaseResult staticProject(ProjectVo record,User user);

    /**
     * record.id required
     * record.status 操作状态：1通过，0驳回
     * record.desc 审批意见
     * record.statusOutline 审批步骤
     * @param record
     * @param user
     * @return
     */
    BaseResult summaryCheck(Project record, User user);

    /**
     * 删除
     *
     * @param id
     * @return
     */
    int del(int id);

    /**
     * 详情
     *
     * @param id
     * @return
     */
    Project detail(int id);

    ProjectVo moreDetail(int id);

    /**
     * 分页
     *
     * @param record
     * @return
     */
    List<ProjectVo> list(ProjectVo record);
    BaseResult personSta(ProjectVo record);
    BaseResult depSta(ProjectVo record);
    BaseResult depStaMonth(ProjectVo record);
    BaseResult busSta(ProjectVo record);
    BaseResult busMonthSta(ProjectVo record);
    BaseResult comMonthSta(ProjectVo record);
    BaseResult comSta(ProjectVo record);
    ListResult projectDetail(ProjectVo record);
    ListResult descPage(ProjectVo record);

    ListResult page(ProjectVo record);

    ListResult pageWithName(ProjectVo record);
    ListResult selfPageWithName(ProjectVo record);
    ListResult outlinePageWithName(ProjectVo record);
    ListResult selfOutlinePageWithName(ProjectVo record);



    /**
     * 统计
     *
     * @param record
     * @return
     */
    long count(Project record);

}
